Current trends in remote vehicle development include providing increased remote vehicle autonomy, which can require significant updates to behavior systems of remote vehicles.
Certain usage patterns of remote vehicle systems have evolved during the creation of complex remote vehicle behaviors. Existing remote vehicle behavior systems, such as the system described in U.S. patent application Ser. No. 12/100,782, filed Apr. 10, 2008, entitled Robotic Systems, can be based on a tree structure that does not separate the process of searching for actuator commands from the management of the “state machine” logic of the application. This can lead to a pattern of usage where certain “big behaviors” (e.g., a pose behavior or a waypoint behavior) are essentially statically configured as services and the big behaviors are invoked in a completely ad-hoc manner via behavior system events, leading to the possibility of scalability problems that are at least partly due to having a “hidden API”. A “big behavior” can be defined as a part of the behavior system that actually participates in the action selection search, while other behaviors can be “managers” that “control” the handful of big behaviors by sending an ad-hoc event “language.” Use of such big behaviors prevents clean separation of behavioral logic from implementation of action search processes. In addition, such big behaviors can make behavior writing more complex because the programmer has to deal with action selection search callbacks even if the programmer is really trying to implement application logic. As the behavior system grows, the need to know all of the separate “event languages” and “manager” relationships can make it prohibitively complex to continue to build upon existing behavior networks or reconfigure existing behavior networks dynamically to extend the functionality of a behavior system.
Further, a lack of good support for sequences, state machines, and other core logic as a part of a behavior system can mean that certain complex behaviors (e.g., stair climbing or self-righting) having many separate states and each stage must create its own “state machine logic” internally, resulting in either ad-hoc state machine systems or large and complex “monster behaviors” with very complex behavior-specific configurations. Lack of structure in a behavior system can limit growth of the system and successful extension of applications.